(*DONT_TOUCH = "TRUE"*)
module pwm_generator (
    input wire clk,            // 时钟信号
    input wire rst_n,            // 复位信号
    input wire enable,         // 使能信号
    input wire [7:0] duty_cycle,  // 占空比 (0 到 255)
    output reg pwm_out         // PWM 输出信号
);

    reg [7:0] counter;         // 计数器，用于生成 PWM 波形

    // 每个时钟周期的动作
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            counter <= 8'b0;
            pwm_out <= 0;
        end else if (enable) begin
            // 计数器加1
            if (counter < 255) begin
                counter <= counter + 1;
            end else begin
                counter <= 8'b0;
            end

            // 根据占空比控制 PWM 输出
            if (counter < duty_cycle) begin
                pwm_out <= 1;
            end else begin
                pwm_out <= 0;
            end
        end else begin
            pwm_out <= 0;  // 禁用时，PWM 输出为低
        end
    end

endmodule
